0867. 转置矩阵【简单】
1. 📝 题目描述
给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵。
矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。

示例 1:
txt
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]1
2
2
示例 2:
txt
输入:matrix = [[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]1
2
2
提示:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 10001 <= m * n <= 10^5-10^9 <= matrix[i][j] <= 10^9
2. 🎯 s.1 - 暴力解法
js
/**
* @param {number[][]} matrix
* @return {number[][]}
*/
var transpose = function (matrix) {
const m = matrix.length // 原矩阵行数
const n = matrix[0].length // 原矩阵列数
// 创建转置后的矩阵,行数为n,列数为m
const transposed = new Array(n)
for (let i = 0; i < n; i++) {
transposed[i] = new Array(m)
}
// 填充转置矩阵:原矩阵的第i行第j列元素,变为转置矩阵的第j行第i列元素
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
transposed[j][i] = matrix[i][j]
}
}
return transposed
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- 时间复杂度:
,需要遍历原矩阵的每个元素 - 空间复杂度:
,需要创建一个新的转置矩阵 - 算法思路:
- 获取矩阵维度:首先获取原矩阵的行数
m和列数n - 创建结果矩阵:创建一个
n×m的新矩阵用于存储转置结果 - 填充元素:遍历原矩阵,将
matrix[i][j]的元素放到transposed[j][i]的位置 -> 行列互换 - 返回结果:返回转置后的矩阵
- 获取矩阵维度:首先获取原矩阵的行数